Em desenvolvimento de software, upstream refere-se a uma direção em relativa aos autores ou mantenedores originais do software que é distribuído como código-fonte e é uma qualificação de um bug ou patch. Por exemplo, um patch enviado upstream é oferecido aos autores originais ou mantenedores do software. Se aceito, os autores ou mantenedores incluirão o patch em seu software, imediatamente ou em uma versão futura. Se rejeitado, a pessoa que enviou o patch terá que manter sua própria distribuição do software do autor.
O desenvolvimento upstream permite que outras distribuições se beneficiem dele quando escolherem a versão futura.[1]
O termo também se refere a bugs; diz-se que a responsabilidade por um bug reside no upstream quando não é causado pelos esforços de portabilidade e integração da distribuição.